package testes;

import static org.junit.Assert.*;

import java.util.HashSet;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.quasar.copaPaises.businessLayer.CalendarDate;
import org.quasar.copaPaises.businessLayer.Campeonato;
import org.quasar.copaPaises.businessLayer.Cartao;
import org.quasar.copaPaises.businessLayer.Cidade;
import org.quasar.copaPaises.businessLayer.Clube;
import org.quasar.copaPaises.businessLayer.Continente;
import org.quasar.copaPaises.businessLayer.Equipa;
import org.quasar.copaPaises.businessLayer.Estadio;
import org.quasar.copaPaises.businessLayer.Golo;
import org.quasar.copaPaises.businessLayer.Grupo;
import org.quasar.copaPaises.businessLayer.Jogador;
import org.quasar.copaPaises.businessLayer.Jogo;
import org.quasar.copaPaises.businessLayer.Membro;
import org.quasar.copaPaises.businessLayer.Pais;
import org.quasar.copaPaises.businessLayer.Participacao;
import org.quasar.copaPaises.businessLayer.Participante;
import org.quasar.copaPaises.businessLayer.Treinador;

public class MembroTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		 CalendarDate.allInstances.clear();
		  Campeonato.allInstances.clear();
		  Cartao.allInstances.clear();
		  Cidade.allInstances.clear();
		  Clube.allInstances.clear();
		  Continente.allInstances.clear();
		  Equipa.allInstances.clear();
		  Estadio.allInstances.clear();
		  Golo.allInstances.clear();
		  Grupo.allInstances.clear();
		  Jogador.allInstances.clear();
		  Jogo.allInstances.clear();
		  Membro.allInstances.clear();
		  Pais.allInstances.clear();
		  Participacao.allInstances.clear();
		  Participante.allInstances().clear();
		  Treinador.allInstances.clear();
	}

	@After
	public void tearDown() throws Exception {
		 CalendarDate.allInstances.clear();
		  Campeonato.allInstances.clear();
		  Cartao.allInstances.clear();
		  Cidade.allInstances.clear();
		  Clube.allInstances.clear();
		  Continente.allInstances.clear();
		  Equipa.allInstances.clear();
		  Estadio.allInstances.clear();
		  Golo.allInstances.clear();
		  Grupo.allInstances.clear();
		  Jogador.allInstances.clear();
		  Jogo.allInstances.clear();
		  Membro.allInstances.clear();
		  Pais.allInstances.clear();
		  Participacao.allInstances.clear();
		  Participante.allInstances().clear();
		  Treinador.allInstances.clear();
	}

	@Test
	public final void testMembro() {
		Membro membro = new Membro();
		assertNotNull(membro);
	}

	@Test
	public final void testMembroIntIntEquipaJogador() {
		int entrada = 0;
		int saida = 90;
		Equipa equipa = new Equipa();
		Jogador jogador = new Jogador();
		Membro membro = new Membro(entrada, saida, equipa, jogador);
		assertNotNull(membro);
		assertNotNull(membro.minuto_entrada());
		assertEquals(membro.minuto_entrada(),entrada);
		assertNotNull(membro.minuto_saida());
		assertEquals(membro.minuto_saida(),saida);
		assertNotNull(membro.equipa());
		assertSame(membro.equipa(),equipa);
		assertNotNull(membro.jogador());
		assertSame(membro.jogador(),jogador);
	}

	@Test
	public final void testMinuto_entrada() {
		int entrada = 0;
		Membro membro = new Membro(entrada,90,null,null);
		assertNotNull(membro.minuto_entrada());
		assertEquals(membro.minuto_entrada(),entrada);
	}

	@Test
	public final void testSetMinuto_entrada() {
		Membro membro = new Membro();
		int entrada = 0;
		membro.setMinuto_entrada(entrada);
		assertNotNull(membro.minuto_entrada());
		assertEquals(membro.minuto_entrada(),entrada);
	}

	@Test
	public final void testMinuto_saida() {
		int saida = 90;
		Membro membro = new Membro(0,saida,null,null);
		assertNotNull(membro.minuto_saida());
		assertEquals(membro.minuto_saida(),saida);
	}

	@Test
	public final void testSetMinuto_saida() {
		Membro membro = new Membro();
		int saida = 90;
		membro.setMinuto_saida(saida);
		assertNotNull(membro.minuto_saida());
		assertEquals(membro.minuto_saida(),saida);
	}

	@Test
	public final void testEquipa() {
		Equipa equipa = new Equipa();
		Membro membro = new Membro(0,90,equipa,null);
		assertNotNull(membro.equipa());
		assertSame(membro.equipa(),equipa);
	}

	@Test
	public final void testSetEquipa() {
		Equipa equipa = new Equipa();
		Membro membro= new Membro();
		membro.setEquipa(equipa);
		assertNotNull(membro.equipa());
		assertEquals(membro.equipa(),equipa);
	}

	@Test
	public final void testJogador() {
		Jogador jogador = new Jogador();
		Membro membro = new Membro(0,90,null,jogador);
		assertNotNull(membro.jogador());
		assertSame(membro.jogador(),jogador);
	}

	@Test
	public final void testSetJogador() {
		Jogador jogador = new Jogador();
		Membro membro = new Membro();
		membro.setJogador(jogador);
		assertNotNull(membro.jogador());
		assertSame(membro.jogador(),jogador);
	}

	@Test
	public final void testCartoes() {
		Membro membro = new Membro();
		HashSet<Cartao> cartoes = new HashSet<Cartao>();
		Cartao c1 = new Cartao();
		Cartao c2 = new Cartao();
		Cartao c3 = new Cartao();
		cartoes.add(c1);
		cartoes.add(c2);
		membro.setCartoes(cartoes);
		assertNotNull(membro.cartoes());
		assertEquals(membro.cartoes(),cartoes);
		assertTrue(membro.cartoes().size()==2);
	}

	@Test
	public final void testSetCartoes() {
		Membro membro = new Membro();
		HashSet<Cartao> cartoes = new HashSet<Cartao>();
		Cartao c1 = new Cartao();
		Cartao c2 = new Cartao();
		Cartao c3 = new Cartao();
		cartoes.add(c1);
		cartoes.add(c2);
		membro.setCartoes(cartoes);
		assertNotNull(membro.cartoes());
		assertEquals(membro.cartoes(),cartoes);
		assertTrue(membro.cartoes().size()==2);
	}

	@Test
	public final void testGolos() {
		Membro membro = new Membro();
		HashSet<Golo> golos = new HashSet<Golo>();
		Golo g1 = new Golo();
		Golo g2 = new Golo();
		Golo g3 = new Golo();
		golos.add(g1);
		golos.add(g2);
		membro.setGolos(golos);
		assertNotNull(membro.golos());
		assertEquals(membro.golos(),golos);
		assertTrue(membro.golos().size()==2);
	}

	@Test
	public final void testSetGolos() {
		Membro membro = new Membro();
		HashSet<Golo> golos = new HashSet<Golo>();
		Golo g1 = new Golo();
		Golo g2 = new Golo();
		Golo g3 = new Golo();
		golos.add(g1);
		golos.add(g2);
		membro.setGolos(golos);
		assertNotNull(membro.golos());
		assertEquals(membro.golos(),golos);
		assertTrue(membro.golos().size()==2);
	}

	@Test
	public final void testToString() {
		int entrada = 0;
		int saida = 90;
		Equipa equipa = new Equipa();
		Jogador jogador = new Jogador();
		Membro membro = new Membro(entrada,saida,equipa,jogador);
		String toString = "Membro [minuto_entrada=0, minuto_saida=90, equipa=Equipa [jogo=null, seleccao=null]\n" +
				", jogador=Jogador [posicao=null, clube=null]\n]\n";
		assertEquals(membro.toString(),toString);
	}

}
